﻿using System;
using System.Collections;
using System.Collections.Generic;

namespace UniRx
{
	// Token: 0x020003AA RID: 938
	[Serializable]
	public struct Tuple<T1, T2, T3, T4, T5, T6, T7> : IStructuralEquatable, IStructuralComparable, IComparable, ITuple, IEquatable<Tuple<T1, T2, T3, T4, T5, T6, T7>>
	{
		// Token: 0x06001323 RID: 4899 RVA: 0x00057A8F File Offset: 0x00055E8F
		public Tuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7)
		{
			this.item1 = item1;
			this.item2 = item2;
			this.item3 = item3;
			this.item4 = item4;
			this.item5 = item5;
			this.item6 = item6;
			this.item7 = item7;
		}

		// Token: 0x17000142 RID: 322
		// (get) Token: 0x06001324 RID: 4900 RVA: 0x00057AC6 File Offset: 0x00055EC6
		public T1 Item1
		{
			get
			{
				return this.item1;
			}
		}

		// Token: 0x17000143 RID: 323
		// (get) Token: 0x06001325 RID: 4901 RVA: 0x00057ACE File Offset: 0x00055ECE
		public T2 Item2
		{
			get
			{
				return this.item2;
			}
		}

		// Token: 0x17000144 RID: 324
		// (get) Token: 0x06001326 RID: 4902 RVA: 0x00057AD6 File Offset: 0x00055ED6
		public T3 Item3
		{
			get
			{
				return this.item3;
			}
		}

		// Token: 0x17000145 RID: 325
		// (get) Token: 0x06001327 RID: 4903 RVA: 0x00057ADE File Offset: 0x00055EDE
		public T4 Item4
		{
			get
			{
				return this.item4;
			}
		}

		// Token: 0x17000146 RID: 326
		// (get) Token: 0x06001328 RID: 4904 RVA: 0x00057AE6 File Offset: 0x00055EE6
		public T5 Item5
		{
			get
			{
				return this.item5;
			}
		}

		// Token: 0x17000147 RID: 327
		// (get) Token: 0x06001329 RID: 4905 RVA: 0x00057AEE File Offset: 0x00055EEE
		public T6 Item6
		{
			get
			{
				return this.item6;
			}
		}

		// Token: 0x17000148 RID: 328
		// (get) Token: 0x0600132A RID: 4906 RVA: 0x00057AF6 File Offset: 0x00055EF6
		public T7 Item7
		{
			get
			{
				return this.item7;
			}
		}

		// Token: 0x0600132B RID: 4907 RVA: 0x00057AFE File Offset: 0x00055EFE
		int IComparable.CompareTo(object obj)
		{
			return ((IStructuralComparable)this).CompareTo(obj, Comparer<object>.Default);
		}

		// Token: 0x0600132C RID: 4908 RVA: 0x00057B18 File Offset: 0x00055F18
		int IStructuralComparable.CompareTo(object other, IComparer comparer)
		{
			if (other == null)
			{
				return 1;
			}
			if (!(other is Tuple<T1, T2, T3, T4, T5, T6, T7>))
			{
				throw new ArgumentException("other");
			}
			Tuple<T1, T2, T3, T4, T5, T6, T7> tuple = (Tuple<T1, T2, T3, T4, T5, T6, T7>)other;
			int num = comparer.Compare(this.item1, tuple.item1);
			if (num != 0)
			{
				return num;
			}
			num = comparer.Compare(this.item2, tuple.item2);
			if (num != 0)
			{
				return num;
			}
			num = comparer.Compare(this.item3, tuple.item3);
			if (num != 0)
			{
				return num;
			}
			num = comparer.Compare(this.item4, tuple.item4);
			if (num != 0)
			{
				return num;
			}
			num = comparer.Compare(this.item5, tuple.item5);
			if (num != 0)
			{
				return num;
			}
			num = comparer.Compare(this.item6, tuple.item6);
			if (num != 0)
			{
				return num;
			}
			return comparer.Compare(this.item7, tuple.item7);
		}

		// Token: 0x0600132D RID: 4909 RVA: 0x00057C4B File Offset: 0x0005604B
		public override bool Equals(object obj)
		{
			return ((IStructuralEquatable)this).Equals(obj, EqualityComparer<object>.Default);
		}

		// Token: 0x0600132E RID: 4910 RVA: 0x00057C64 File Offset: 0x00056064
		bool IStructuralEquatable.Equals(object other, IEqualityComparer comparer)
		{
			if (!(other is Tuple<T1, T2, T3, T4, T5, T6, T7>))
			{
				return false;
			}
			Tuple<T1, T2, T3, T4, T5, T6, T7> tuple = (Tuple<T1, T2, T3, T4, T5, T6, T7>)other;
			return comparer.Equals(this.item1, tuple.item1) && comparer.Equals(this.item2, tuple.item2) && comparer.Equals(this.item3, tuple.item3) && comparer.Equals(this.item4, tuple.item4) && comparer.Equals(this.item5, tuple.item5) && comparer.Equals(this.item6, tuple.item6) && comparer.Equals(this.item7, tuple.item7);
		}

		// Token: 0x0600132F RID: 4911 RVA: 0x00057D74 File Offset: 0x00056174
		public override int GetHashCode()
		{
			EqualityComparer<T1> @default =EqualityComparer<T1>.Default;
			EqualityComparer<T2> default2 = EqualityComparer<T2>.Default;
			EqualityComparer<T3> default3 = EqualityComparer<T3>.Default;
			EqualityComparer<T4> default4 = EqualityComparer<T4>.Default;
			EqualityComparer<T5> default5 = EqualityComparer<T5>.Default;
			EqualityComparer<T6> default6 = EqualityComparer<T6>.Default;
			EqualityComparer<T7> default7 = EqualityComparer<T7>.Default;
			int num = @default.GetHashCode(this.item1);
			num = ((num << 5) + num ^ default2.GetHashCode(this.item2));
			int num2 = default3.GetHashCode(this.item3);
			num2 = ((num2 << 5) + num2 ^ default4.GetHashCode(this.item4));
			num = ((num << 5) + num ^ num2);
			num2 = default5.GetHashCode(this.item5);
			num2 = ((num2 << 5) + num2 ^ default6.GetHashCode(this.item6));
			num2 = ((num2 << 5) + num2 ^ default7.GetHashCode(this.item7));
			return (num << 5) + num ^ num2;
		}

		// Token: 0x06001330 RID: 4912 RVA: 0x00057E50 File Offset: 0x00056250
		int IStructuralEquatable.GetHashCode(IEqualityComparer comparer)
		{
			int num = comparer.GetHashCode(this.item1);
			num = ((num << 5) + num ^ comparer.GetHashCode(this.item2));
			int num2 = comparer.GetHashCode(this.item3);
			num2 = ((num2 << 5) + num2 ^ comparer.GetHashCode(this.item4));
			num = ((num << 5) + num ^ num2);
			num2 = comparer.GetHashCode(this.item5);
			num2 = ((num2 << 5) + num2 ^ comparer.GetHashCode(this.item6));
			num2 = ((num2 << 5) + num2 ^ comparer.GetHashCode(this.item7));
			return (num << 5) + num ^ num2;
		}

		// Token: 0x06001331 RID: 4913 RVA: 0x00057F04 File Offset: 0x00056304
		string ITuple.ToString()
		{
			return string.Format("{0}, {1}, {2}, {3}, {4}, {5}, {6}", new object[]
			{
				this.item1,
				this.item2,
				this.item3,
				this.item4,
				this.item5,
				this.item6,
				this.item7
			});
		}

		// Token: 0x06001332 RID: 4914 RVA: 0x00057F83 File Offset: 0x00056383
		public override string ToString()
		{
			return "(" + ((ITuple)this).ToString() + ")";
		}

		// Token: 0x06001333 RID: 4915 RVA: 0x00057FA4 File Offset: 0x000563A4
		public bool Equals(Tuple<T1, T2, T3, T4, T5, T6, T7> other)
		{
			EqualityComparer<T1> @default =EqualityComparer<T1>.Default;
			EqualityComparer<T2> default2 = EqualityComparer<T2>.Default;
			EqualityComparer<T3> default3 = EqualityComparer<T3>.Default;
			EqualityComparer<T4> default4 = EqualityComparer<T4>.Default;
			EqualityComparer<T5> default5 = EqualityComparer<T5>.Default;
			EqualityComparer<T6> default6 = EqualityComparer<T6>.Default;
			EqualityComparer<T7> default7 = EqualityComparer<T7>.Default;
			return @default.Equals(this.item1, other.Item1) && default2.Equals(this.item2, other.Item2) && default3.Equals(this.item3, other.Item3) && default4.Equals(this.item4, other.Item4) && default5.Equals(this.item5, other.Item5) && default6.Equals(this.item6, other.Item6) && default7.Equals(this.item7, other.Item7);
		}

		// Token: 0x04000B5D RID: 2909
		private T1 item1;

		// Token: 0x04000B5E RID: 2910
		private T2 item2;

		// Token: 0x04000B5F RID: 2911
		private T3 item3;

		// Token: 0x04000B60 RID: 2912
		private T4 item4;

		// Token: 0x04000B61 RID: 2913
		private T5 item5;

		// Token: 0x04000B62 RID: 2914
		private T6 item6;

		// Token: 0x04000B63 RID: 2915
		private T7 item7;
	}
}
